3 - Wildcards [ID:19970]
49 von 49 angezeigt

Als nächstes wollen wir uns Wildcards anschauen. Wildcards sind dabei Muster mit denen man

Fahrtnamen beschreiben kann. Diese Muster werden expandiert zu tatsächlich vorhandenen

Dateinamen. So kann man zum Beispiel das Muster Stern angeben, was zu einem beliebigen

Teilstring expandiert wird. Gegebenenfalls auch zu einem leeren String. Mit dem Muster

Fragezeichen kann man ein beliebiges Zeichen beschreiben. Das Muster wird also zu einem

beliebigen Zeichen expandiert. Wenn man nun eine Zeichennänge angeben möchte, kann man

dies mit den eckigen Klammern machen. Mit eckige Klammer auf a-d werden die Zeichen

a-d beschrieben. Möchte man, dass ein Zeichen aus einer bestimmten Menge nicht vorkommt,

kann man dies machen, indem man noch ein Ausrufezeichen davor schreibt. Nun kann man eine Dateipfad

angeben und zwischendrin die Muster verwenden. Der Dateipfad mit den Mustern wird anschließend

zu allem expandiert, was auf die Muster zutrifft. Eine Ausnahme davon sind Dateien, deren Name

mit einem Punkt beginnt. Diese können nur durch ein Muster getroffen werden, das explizit

mit einem Punkt beginnt. Weitere Details zu den Mustern findet ihr auf der Manpage zu

den Globs, und zwar in der Sektion 7. Wenn ihr nun diese Muster verwenden wollt, dann

könnt ihr dies ganz einfach in Befehlen machen, die ihr auf der Shell tippt. Die Shell wird

diese Muster automatisch expandieren und die Muster durch die jeweiligen Verzeichnisse

bzw. Dateien ersetzen, auf die das Muster zutrifft. Wenn ihr jedoch z.B. ein Stern als

Argument an ein Programm übergeben wollt, dann müsst ihr dies in dem Aufruf in Anführungsstriche

setzen. Dies gilt für alle Muster, von denen ihr nicht wollt, dass diese expandiert werden,

sondern dass diese in ihrer Form bleiben. Um das Ganze ein bisschen zu verdeutlichen,

haben wir hier nun eine Tabelle mit verschiedenen Mustern und möglicher Dateinamen. Nun wollen

wir prüfen, welches der Muster jeweils auf welchen Dateinamen zutrifft. Das erste Muster

ist Test-Sternchen. Das bedeutet, das Muster trifft auf alle Dateien zu, die mit Test beginnen

und anschließend etwas Beliebiges oder Nichts folgt. Dieses Muster trifft hier auf die Dateien

Test.C und Test.2.C zu. Als nächstes haben wir das Muster Sternchen, Test, Sternchen.

Hier kann das Stern wieder zu Beliebigen expandieren. Also trifft dieses Muster auf alle Dateinamen

zu, die irgendwo den String Test enthalten. Auch wieder auf Test.C und Test.2.C, die mit

Test beginnen, da der Stern ebenfalls zu einem leeren String expandiert werden kann. Zusätzlich

ist auch die Datei attest.doc von dem Muster mit abgedeckt. Die Ausnahme bildet an der

Stelle jedoch die Datei.test.c, da der Stern nicht automatisch auf führende Punkte expandiert

wird. Das nächste Muster lautet Test?.Stern. Das Fragezeichen wird zu einem einzelnen Zeichen

expandiert. Dies darf aber nicht leer sein. Dementsprechend trifft dieses Muster nur auf

den Namen Test.2.C zu. Da hier das Fragezeichen zu der 2 expandiert wird, der Punkt weiterhin

übernommen wird und der Stern zu dem C expandiert. Das Muster T und in eckigen Klammern 1 und

X gefolgt von einem Punkt und Stern trifft nur noch auf die Datei T1.h zu und auf die

Datei Tx.map. Wenn wir nun das Muster umändern und in den eckigen Klammern schreiben Ausrufezeichen

1,2, dann fordern wir, dass explizit keine 1 und keine 2 nach dem T an zweiter Stelle

folgen sollen. Dementsprechend trifft das Muster nur noch auf die Datei Tx.map zu. Und

schließlich ein Muster mit vorangesetzten Punkt. Dies trifft nun auf die Datei.test.c

zu. Nun stellt sich die Frage, wie können wir diese Muster in unseren eigenen Programmen

mit verwenden? Tatsächlich gibt es dafür schon eine Bibliotheksfunktion, die wir einsetzen

können, nämlich FnMatch. Die Funktion FnMatch prüft, ob ein String, der hier als zweites

Argument übergeben wird, auf ein Muster zutrifft, das das erste Argument darstellt. Außerdem

können als drittes Argument noch Flex angegeben werden, die untereinander bitweise verodert

werden. Die Flex beinhalten z.B. FnM pathname, mit dem spezifiziert werden kann, ob ein

Strichstrich in einem String von einem Muster getroffen wird, also ob ein Stern oder ein

Fragezeichen zu einem Strichstrich expandieren darf, oder eben das Flag FnM period, mit dem

angegeben werden kann, ob ein Führung nach Punkt in einem String von einem Muster getroffen

werden kann, oder eben noch weitere Flex, die in der Man-Page beschrieben sind.

Teil einer Videoserie :
Teil eines Kapitels:
Dateisysteme

Zugänglich über

Offener Zugang

Dauer

00:05:05 Min

Aufnahmedatum

2020-07-21

Hochgeladen am

2020-07-21 18:36:22

Sprache

de-DE

Einbetten
Wordpress FAU Plugin
iFrame
Teilen